// 导入数据库ca
const db = require('../db/index')

// 获取基础数据路由的处理函数
exports.getBasis = function (req, res) {
  // SQL语句
  const selectSQL = 'select * from blog_basis'
  // 执行SQL语句
  db.query(selectSQL, (err, result) => {
    // SQL指向性失败
    if (err) return res.cc(err.message)
    // 没有查到数据
    if (result.length < 1) return res.cc('暂时没有基础数据')
    // 获取成功
    res.send({
      data: Object.values(result[0]),
      status: 0,
      msg: '获取成功'
    })
  })
}

// 修改基础数据路由的处理函数
exports.updateBasis = function (req, res) {
  // 将对象里面的每一个value转换成json格式的字符串
  for (let key in req.body) {
    req.body[key] = JSON.stringify(req.body[key])
  }
  console.log(req.body)
  // SQL语句
  const updateSQL = 'update blog_basis set ?'
  // 执行SQL语句
  db.query(updateSQL, req.body, (err, result) => {
    // SQL语句执行错误
    if (err) return res.cc(err.message)
    // 影响行数不为1
    if (result.affectedRows !== 1) return res.cc('修改失败!')
    // 修改成功
    res.cc('修改成功!', 0)
  })
}

// 获取资料卡路由对应处理函数
exports.getdataCardInfo = function (req, res) {
  // 查询语句
  const selectSQL = 'select * from blog_data_card'
  // 执行查询语句
  db.query(selectSQL, (err, result) => {
    console.log(result)
    // 查询语句执行失败
    if (err) return res.cc(err.message)
    // 查询到的条数为0
    if (result.length === 0) return res.cc('没有找到数据')
    // 查询成功
    res.send({
      data: {
        keys: Object.keys(result[0]),
        values: Object.values(result[0])
      },
      status: 0,
      msg: '获取成功'
    })
  })
}

// 新增自定义
exports.addNewCustom = function (req, res) {
  // 定义添加字段语句
  const alterSQL = `alter table blog_data_card add custom${req.body.num} varchar(255)`
  db.query(alterSQL, (err, result) => {
    // sql执行错误
    if (err) return res.cc(err.message)
    // 新增失败
    if (result.message != '&Records: 0  Duplicates: 0  Warnings: 0')
      return res.cc('新增失败')
    // 新增成功
  })
  // 定义修改语句
  const updateSQL = `update blog_data_card set custom${req.body.num}=?`
  // 执行修改语句
  // console.log(JSON.stringify(req.body.value[0]))
  setTimeout(() => {
    db.query(updateSQL, JSON.stringify(req.body.value[0]), (err, result) => {
      // 执行sql语句失败
      if (err) return res.cc(err.message)
      // 影响行数不为1
      if (result.affectedRows !== 1) return res.cc('添加失败')
      // 修改成功
      res.cc('添加成功', 0)
    })
  }, 800)
}

// 设置资料卡信息
exports.setDataCard = function (req, res) {
  // console.log(req.body)
  // 定义修改语句
  const updateSQL = 'update blog_data_card set ?'
  // 之心修改语句
  db.query(updateSQL, req.body, (err, result) => {
    // 执行sql语句失败
    if (err) return res.cc(err.message)
    // 影响行数不为1
    if (result.affectedRows !== 1) return res.cc('保存失败')
    // 修改成功
    res.cc('保存成功', 0)
  })
}

// 删除资料卡信息
exports.deleteDataCard = function (req, res) {
  // console.log(req.body.field)
  // 定义删除SQL语句
  const deleteSQL = `alter table blog_data_card drop column ${req.body.field}`
  // 执行SQL语句
  db.query(deleteSQL, (err, result) => {
    // SQL执行失败
    if (err) return res.cc(err.message)
    // console.log(result)
    // 报错
    if (result.message != '&Records: 0  Duplicates: 0  Warnings: 0')
      return result.message
    // 删除成功
    res.cc('删除成功', 0)
  })
}

// 获取页脚徽标
exports.getFooterLogo = function (req, res) {
  // 定义查询语句
  const selectSQL = 'select * from blog_footer_logo'
  // 执行SQL语句
  db.query(selectSQL, (err, result) => {
    // console.log(result)
    // sql执行失败
    if (err) return res.cc(err.message)
    // 没有查询到
    if (result.length === 0) return res.cc('无数据')
    // 查询成功
    res.send({
      data: result,
      status: 0,
      msg: '获取成功'
    })
  })
}

// 添加页脚徽标
exports.addFooterLogo = function (req, res) {
  // 添加语句
  const addSQL = 'insert into blog_footer_logo set ?'
  // 执行插入
  db.query(addSQL, req.body, (err, result) => {
    // SQL执行错误
    if (err) return res.cc(err.message)
    // 影响行数不为1
    if (result.affectedRows !== 1) return res.cc('添加失败')
    // 添加成功
    res.cc('添加成功', 0)
  })
}

// 删除页脚徽标
exports.removeFooterLogo = function (req, res) {
  // console.log(req.body.id)
  // 定义删除语句
  const deleteSQL = `delete from blog_footer_logo where id=?`
  // 执行语句
  db.query(deleteSQL, req.body.id, (err, result) => {
    // SQL语句执行错误
    if (err) return res.cc(err.message)
    // 影响行数不为1
    if (result.affectedRows !== 1) return res.cc('删除失败')
    // 删除成功
    res.cc('删除成功', 0)
  })
}

// 修改页脚徽标的数据
exports.updateFooterLogo = async function (req, res) {
  // console.log(req.body.ftlInfo)
  // console.log(...req.body.ftlInfo)
  let data = req.body.ftlInfo.map((item) => Object.values(item))
  // console.log(data)
  try {
    const result = await new Promise((resolve, reject) => {
      data.forEach((item) => {
        // console.log(item)
        // 定义修改语句
        let updateSQL =
          'update blog_footer_logo set title=?, url=?, subject=?, value=?, color=? where id=?'
        // 执行SQL语句
        db.query(updateSQL, item, (err, result) => {
          // SQL执行失败
          if (err) return reject()
          // 影响行数不对
          if (result.affectedRows !== 1) return reject('保存失败')
          // 修改成功
          return resolve('保存成功')
        })
      })
    })
    if (result) return res.cc(result, 0)
  } catch (err) {
    return res.cc(err.message)
  }
}
